1. Field of the Invention
This disclosure generally relates to testing of systems. More specifically, this disclosure relates to automatically generating test cases that reveal faults of a system.
2. Description of the Related Technology
Generally described, computing devices can be utilized in a variety of contexts such as for exchanging information, facilitating communication between users, facilitating the operation and control of a wide variety devices and processes, and the like. In the context of a manufacturing or production environment, a computing network made up of a number of computing devices, including personal computing devices, server computing devices, programmable logic controllers (PLCs), and/or other networked devices can be utilized in conjunction with a communication network, such as a wide area network (WAN), to facilitate the operation and control of various devices/processes. For example, a networked PLC may be utilized to control the operation of physical manufacturing or processing equipment, such as controllers for valves, power supplies, pumps, machinery, etc. Similarly, a software application, or suite of software applications, may be hosted on a networked computing device (such as a server or personal computing device) to receive instructions regarding the operation of various equipment and transmit the appropriate respective instructions to the appropriate equipment (such as through a PLC).
In the event of fault in one or more networked computing devices, such a fault in a computing device can lead to the failure of associated equipment, loss of manufacturing/production time, property damage, and the like. Accordingly, computing devices (including hardware and software aspects) can be designed with redundant components to avoid fault conditions during execution in a manufacturing/production environment. Additionally, computing systems can be tested to verify that requirements for safety and redundancy are met and to discover errors in design/implementation. For example, a testing system can be implemented, such as in a laboratory, that attempts to emulate various commands, instructions, or other environmental information and then measure the response generated by the computing device(s) being tested. The emulated commands, instructions, or other environment information can be embodied as a test case or testing procedure that can be executed by a testing system.
One approach to the generation of test cases and/or testing procedures for computing device testing involves the utilization of testing grammars from which test cases/testing procedures can be derived. Generally described, grammar based test generation involves a grammar that describes a set of strings. The grammar can be processed by a testing system and utilized to derive test cases corresponding to the set of strings in the grammar. However, traditional approaches to testing grammars generally described too large of a set of strings. Accordingly, the resulting test cases from such testing grammar are often too large and require too much testing system resources to effectively test devices.